Systems for generating instances of variable fonts

ABSTRACT

In implementations of systems for generating instances of variable fonts, a computing device implements a similarity system to receive input data describing attribute values of glyphs of an input font. The similarity system generates a custom instance of a variable font by modifying a value of a registered design axis of the variable font based on the attribute values. A similarity score is determined that describes a visual similarity between the custom instance of the variable font and the input font. The similarity system identifies an additional design axis of the variable font based on the similarity score and generates an instance of the variable font that is visually similar to the input font by modifying a value of the additional design axis.

BACKGROUND

Text is one of the most important tools available to digital artistsbecause it is usable to simultaneously convey a message based on asubstance of the text and propagate a theme or a brand based on a visualappearance of the text. Digital content creation systems render glyphsof text using different fonts to change the visual appearance of thetext depicted in digital content. In some scenarios, it is desirable toidentify fonts based on a visual appearance of glyphs rendered using thefonts such as to identify fonts which are visually similar to aparticular font. For example, the particular font may be a custom fontwhich is not widely available. In this example, a digital artist desiresa font that is visually similar to the particular font.

Conventional systems display multiple indications of fonts which arevisually similar to the particular font, for example, to indicateavailable visually similar fonts if the particular font is notavailable. These visually similar fonts are determined based onsimilarity scores calculated from Euclidean distances between featurevector representations of the fonts. For example, if Euclidean distancesare relatively small for feature vectors corresponding to first andsecond fonts, then the first font and the second font have a highsimilarity score and the first and second fonts are visually similar.Alternatively, if Euclidean distances are relatively large for thefeature vectors corresponding to the first and second fonts, then thefirst font and the second font have a low similarity score and the firstand second fonts are not visually simila.

Conventional systems, however, are not capable of identifying instancesof variable fonts that are visually similar to the particular font. Avariable font is a type of font that has a visual appearance which ischangeable by modifying a value of a design axis of the variable font.For example, the variable font includes a default or a named instanceand increasing and/or decreasing the value of the design axis generatesinstances of the variable font which are visually distinct from thedefault instance. Many variable fonts include multiple design axes suchthat each value of each design axis corresponds to a unique instance ofthe variable font. Because a single variable font is usable to generatea multitude of visually distinct instances of the single variable font,there is no specific instance of the variable font that isrepresentative of the variable font for calculating a similarity score,for example, based on Euclidean distances.

SUMMARY

Systems and techniques are described for generating instances ofvariable fonts. In one example, a computing device implements asimilarity system to automatically generate an instance of a variablefont that is visually similar to an input font. For example, thesimilarity system receives input data describing attribute values ofglyphs of the input font. The similarity system generates a custominstance of the variable font by modifying a value of a design axis ofthe variable font based on the attribute values of the glyphs of theinput font.

A similarity score is determined that describes a visual similaritybetween the custom instance of the variable font and the input font. Thesimilarity system identifies an additional design axis of the variablefont based on the similarity score. For example, the similarity systemidentifies the additional design axis having a higher absolute value ofcorrelation with the similarity score than other additional design axesof the variable font. The similarity system generates the instance ofthe variable font that is visually similar to the input font bymodifying a value of the additional design axis.

This Summary introduces a selection of concepts in a simplified formthat are further described below in the Detailed Description. As such,this Summary is not intended to identify essential features of theclaimed subject matter, nor is it intended to be used as an aid indetermining the scope of the claimed subject matter.

BRIEF DESCRIPTION OF THE DRAWINGS

The detailed description is described with reference to the accompanyingfigures. Entities represented in the figures may be indicative of one ormore entities and thus reference may be made interchangeably to singleor plural forms of the entities in the discussion.

FIG. 1 is an illustration of an environment in an example implementationthat is operable to employ digital systems and techniques for generatinginstances of variable fonts as described herein.

FIG. 2 depicts a system in an example implementation showing operationof a similarity module for generating instances of variable fonts.

FIGS. 3A, 3B, and 3C illustrate an example of generating an instance ofa variable font that is visually similar to an input font.

FIG. 4 is a flow diagram depicting a procedure in an exampleimplementation in which input data describing attribute values of glyphsof an input font is received and an instance of a variable font isgenerated that is visually similar to the input font.

FIG. 5 illustrates an example of generated instances of a variable fontthat are visually similar to example input fonts.

FIG. 6 is a flow diagram depicting a procedure in an exampleimplementation in which a digital image depicting glyphs rendered usingan input font is received and an instance of a variable font isgenerated that is visually similar to the input font.

FIG. 7 illustrates an example of a user interface in which instances ofvariable fonts are identified as being visually similar to an inputfont.

FIG. 8 illustrates an example system that includes an example computingdevice that is representative of one or more computing systems and/ordevices that may implement the various techniques described herein.

DETAILED DESCRIPTION Overview

Conventional systems associate a first font and a second font as beingvisually similar fonts based on a similarity score that describes avisual similarity between the first and second fonts. These similarityscores are calculated from Euclidean distances between feature vectorrepresentations of the fonts. It is not possible to represent a variablefont as a feature vector for comparison with a feature vectorrepresentation of another font. This is because the variable font isrepresentative of a variety of visually distinct potential instances ofthe variable font.

Because conventional systems identify similar fonts by comparing featurevectors of the fonts, the conventional systems would require a featurevector representation of every possible instance of a variable font inorder to determine if any of these instances are visually similar to aninput font. Since a single variable font includes a theoreticallyunlimited number of unique instances, identifying a particular instancewhich is visually similar to the input font is impractical or impossibleusing conventional techniques.

In order to overcome these limitations, systems and techniques aredescribed for generating instances of variable fonts. In an example, acomputing device implements a similarity system to automaticallygenerate an instance of a variable font that is visually similar to aninput font. For example, the similarity system receives input datadescribing attribute values of glyphs of the input font.

The attribute values of the glyphs of the input font define visualfeatures of these glyphs such as glyph weight, width, slant, opticalsize, and so forth. The similarity system processes variable font datadescribing a variable font and identifies a design axis of the variablefont. In one example, the design axis is a registered design axis of thevariable font such as an Italic axis, an Optical Size axis, a Slantaxis, a Width axis, a Weight axis, and so forth. The similarity systemdetermines a relationship between values of the design axis of thevariable font and attribute values of glyphs rendered using instances ofthe variable font. The similarity system uses this relationship toidentify a value of the design axis which corresponds to an attributevalue of the glyphs of the input font.

The similarity system applies the identified value to the design axisand generates a first custom instance of the variable font. For example,glyphs rendered using the first custom instance have the attribute valueof the glyphs of the input font. A first similarity score is determinedthat describes a visual similarity between the first custom instance ofthe variable font and the input font. The similarity system identifiesan additional design axis of the variable font based on a correlationbetween values of the additional design axis and the first similarityscore. In one example, the similarity system identifies the additionaldesign axis from a plurality of other additional design axes as havingaxis values expected to affect the first similarity score to a greaterdegree than axis values of the plurality of other additional designaxes. In this example, the similarity system selects the additionaldesign axis as having a higher absolute value of correlation with thefirst similarity score than the plurality of other additional designaxes.

The similarity system generates the instance of the variable font thatis visually similar to the input font by modifying a value of theadditional design axis. For example, the similarity system generates asecond custom instance of the variable font using a median value of theadditional design axis. A second similarity score is determined betweenthe second custom instance of the variable font and the input font. Thesimilarity system then uses a value of the additional design axis to aright of the median value and generates a third custom instance of thevariable font.

A third similarity score is determined between the third custom instanceof the variable font and the input font. If the third similarity scoreis greater than the second similarity score, then the similarity systemcontinues evaluating values further to the right of the median value inthis manner until a value of the additional design axis is identifiedwhich corresponds to a maximum similarity score. If the third similarityscore is not greater than the second similarity score, then thesimilarity system evaluates values of the additional design axis to aleft of the median value until the value is identified that correspondsto the maximum similarity score. The similarity system generates aninstance of the variable font using the first custom instance and thevalue of the additional design axis corresponding to the maximumsimilarity score as the instance of the variable font that is visuallysimilar font to the input font.

By generating instances of variable fonts in this manner, the describedsystems are capable of generating instances of a single variable fontwhich are visually similar to multiple different input fonts. Thesevisually similar fonts are usable in addition to the input fonts or inplace of the input fonts. In this manner, the described systems canreduce computing resource consumption by representing multiple differentinput fonts using instances of a single variable font. For example, asingle variable font file is usable to replace font files of multipleinput fonts. Thus, a font file repository having many font files ofdifferent fonts is replaceable with a repository having a few variablefont files and/or a single variable font file.

Term Examples

As used herein, the term “variable font” refers to a font that supportsmultiple font faces along at least one design axis.

As used herein, the term “design axis” refers to an axis of a variablefont having a range of values which may be adjusted to modify anattribute of glyphs rendered using an instance of the variable font. Byway of example, a design axis may be registered or unregistered.Examples of registered design axes include Italic, Optical Size, Slant,Width, Weight, etc. Examples of unregistered design axes include Serif,xHeight, Ascent, Descent, and so forth.

As used herein, the term “attribute” of a glyph refers to a visualfeature of the glyph. Examples of attributes include weight, width,slant, optical size, etc.

As used herein, the term “instance” of a variable font refers to a fontface corresponding to a particular position in a design-variation spaceof the variable font. By way of example, the font face of an instance ofa variable font is usable to render glyphs of the variable font.

As used herein, the term “master” refers to a set of source font datathat includes complete outline data for a particular font face.

In the following discussion, an example environment is first describedthat may employ the techniques described herein. Example procedures arealso described which may be performed in the example environment as wellas other environments. Consequently, performance of the exampleprocedures is not limited to the example environment and the exampleenvironment is not limited to performance of the example procedures.

Example Environment

FIG. 1 is an illustration of an environment 100 in an exampleimplementation that is operable to employ digital systems and techniquesas described herein. The illustrated environment 100 includes acomputing device 102 connected to a network 104. The computing device102 is configurable as a desktop computer, a laptop computer, a mobiledevice (e.g., assuming a handheld configuration such as a tablet ormobile phone), and so forth. Thus, the computing device 102 may rangefrom a full resource device with substantial memory and processorresources (e.g., personal computers, game consoles) to a low-resourcedevice with limited memory and/or processing resources (e.g., mobiledevices). Additionally, the computing device 102 can be representativeof a plurality of different devices, such as multiple servers utilizedby a business to perform operations “over the cloud.”

The illustrated environment 100 also includes a display device 106 thatis communicatively coupled to the computing device 102 via a wired or awireless connection. A variety of device configurations are usable toimplement the computing device 102 and/or the display device 106. Thecomputing device 102 includes a storage device 108 and similarity module110. The storage device 108 is illustrated to include variable font data112.

The variable font data 112 describes a plurality of variable fontsavailable to the similarity module 110. For example, the variable fontdata 112 includes a font file for each of the plurality of variablefonts. These font files define design axes used by the variable fonts,adjustable ranges of the design axes, default or named instances of thevariable fonts, and so forth.

The similarity module 110 is illustrated as having, receiving, and/ortransmitting input data 114. The input data 114 describes glyphs of aninput font 116. In one example, the input data 114 includes a digitalimage depicting glyphs rendered using the input font 116. In thisexample, the input font 116 may or may not be available to thesimilarity module 110. In an example, the input data 114 includes anelectronic document having glyphs of text rendered using the input font116. In another example, the input data 114 includes a font filecorresponding to the input font 116. The input font 116 may be anon-variable font or an instance of a variable font.

As shown, the similarity module 110 processes the input data 114 todetermine attributes of glyphs of the input font 116. In some examples,these attributes include a weight or a thickness of a stem of a glyph ofthe input font 116. In one example, the attributes of the glyphs includea width or a distance between origins of consecutive glyphs of the inputfont 116. For example, the attributes of the glyphs of the input font116 include a slant or an angle between a vertical stem of a glyph and ay-axis of the glyph's bounding box.

The similarity module 110 also processes the variable font data 112 andidentifies a design axis of a variable font such that values of thedesign axis are proportional to an attribute of glyphs of the variablefont. To define a relationship between the design axis values and valuesof the attribute, the similarity module 110 determines attribute valuesof glyphs of a default or a named instance of the variable font. Thesimilarity module 110 also determines a value or values of the designaxis for the default instance of the variable font. By comparing thevalues of the design axis and corresponding values of the attribute ofthe glyphs, the similarity module 110 derives the relationship betweenthe design axis values and the attribute values for the variable font.

In one example, the similarity module 110 determines whether thevariable font uses a registered design axis such as an Italic axis, anOptical Size axis, a Slant axis, a Width axis, and/or a Weight axis. Thesimilarity module 110 derives a relationship between registered axisvalues and corresponding glyph attributes for each registered designaxis used by the variable font. Consider an example in which thevariable font uses the Weight axis and the similarity module 110 derivesa relationship between the Weight axis values and values of weights ofglyphs of instances of the variable font. In this example, the verticalstem thickness or the weight of a glyph of the variable font is directlyproportional to the values of the Weight axis. This relationship is alsoa function of a number of masters included in the variable font. Forexample, if the variable font includes multiple masters, then therelationship between the values of the Weight axis and the weights ofthe glyphs may be defined by multiple linear equations.

The similarity module 110 leverages the relationship between design axisvalues and the attribute values of the glyphs of the variable font toidentify a design axis value that corresponds to an attribute value ofthe input font 116. The similarity module 110 applies the identifieddesign axis value to the variable font and generates an instance of thevariable font that is visually similar to the input font 116. Considerthe previous example in which the similarity module 110 derives therelationship between the values of the Weight axis and the weights ofthe glyphs of the variable font. The similarity module 110 determinesthat glyphs of the input font 116 have a particular weight or verticalstem thickness. In this example, the similarity module 110 uses therelationship between the Weight axis values and the weights of theglyphs of the variable font to identify a value of the Weight axis whichcorresponds to the particular weight of the glyphs of the input font116. The similarity module 110 uses the identified Weight axis value togenerate an instance of the variable font with glyphs that also have theparticular weight of the glyphs of the input font 116.

In the previous example, the similarity module 110 uses the relationshipbetween the values of the Weight axis and the weights of the glyphs ofthe variable font to generate the instance of the variable font havingglyphs with weights based on weights of glyphs of the input font 116.Thus, the generated instance of the variable font is visually similar tothe input font 116 because the glyphs of the generated instance of thevariable font have the weights of the glyphs rendered using the inputfont 116. In one example, the similarity module 110 determines asimilarity score between the generated instance of the variable font andthe input font 116.

To do so, the similarity module 110 generates or receives a latentrepresentation of the input font 116 and a latent representation of thegenerated instance of the variable font. In an example, the similaritymodule 110 generates the latent representations of the input font 116and the generated instance of the variable font using one or moreconvolutional neural networks. From these latent representations, thesimilarity module 110 extracts a feature vector describing a visualappearance of the input font 116 and a feature vector describing avisual appearance of the generated instance of the variable font. Thesimilarity module 110 determines the similarity score by calculating aEuclidean distance between the feature vectors. In one example, arelatively small Euclidean distance corresponds to a relatively highsimilarity score whereas a relatively large Euclidean distance betweenthe feature vectors corresponds to a relatively low similarity score.

Continuing the previous example, the similarity module 110 determinesthat the variable font also uses the Width axis. In this continuedexample, the similarity module 110 determines that the glyphs of theinput font 116 have a particular width by processing the input data 114.The similarity module 110 also determines a relationship between valuesof the Width axis and widths of the glyphs of instances of the variablefont. The similarity module 110 is implemented leverage the relationshipbetween the values of the Width axis and corresponding widths of glyphsof instances of the variable font to identify a value of the Width axiscorresponding to the particular width of the glyphs of the input font116.

For example, the similarity module 110 uses the identified value of theWidth axis to generate an instance of the variable font such that glyphsof the instance of the variable font have the particular width of theglyphs of the input font 116. In this example, the similarity module 110applies the identified value of the Width axis to the instance of thevariable font having glyphs with weights based on the weights of theglyphs of the input font 116. Thus, the generated instance of thevariable font in this example has glyphs with weights based on weightsof glyphs of the input font 116 and also has glyphs with widths based onwidths of glyphs of the input font 116. For example, the generatedinstance of the variable font has glyphs with the particular weight andthe particular width of the glyphs of the input font 116.

Continuing this example, the similarity module 110 determines that thevariable font also uses the Slant axis. The similarity module 110processes the input data 114 and determines that the glyphs of the inputfont 116 have a particular slant. The similarity module 110 also derivesa relationship between values of the Slant axis and slants of glyphs ofinstances of the variable font. For example, the similarity module 110leverages the relationship between the values of the Slant axis andcorresponding slants of glyphs of instances of the variable font toidentify a value of the Slant axis corresponding to the particular slantof the glyphs of the input font 116.

The similarity module 110 uses the identified value of the Slant axis togenerate an instance of the variable font such that the glyphs of theinstance of the variable font have the particular slant of the glyphs ofthe input font 116. In this example, the similarity module 110 appliesthis identified value of the Slant axis to the instance of the variablefont having glyphs with the weights and widths of the glyphs of theinput font 116. Accordingly, the generated instance of the variable fontin this example has glyphs with the weights, widths, and slants of theinput font 116. For example, the glyphs of the generated instance of thevariable font have the particular weight, the particular width, and theparticular slant of the glyphs of the input font 116.

The similarity module 110 determines a similarity score that describes avisual similarity between the input font 116 and the generated instanceof the variable font with glyphs having the weights, widths, and slantsof the glyphs of the input font 116. The similarity module 110 uses thissimilarity score to identify additional design axes of the variable fontwhich are be usable to maximize the similarity score. In one example,the similarity module 110 evaluates the additional design axes of thevariable font and selects an additional design axis of the variable fonthaving a highest absolute value of correlation with the similarityscore.

For example, the similarity module 110 uses correlation coefficientssuch as Pearson product-moment correlation coefficients to identify theadditional design axis of the variable font having the highest absolutevalue of linear correlation with the similarity score. In anotherexample, the similarity module 110 leverages cross-correlationcalculations to identify the additional design axis of the variable fonthaving the highest absolute value of correlation with the similarityscore. In this manner, the similarity module 110 selects the additionaldesign axis from the additional design axes as having axis valuescorresponding to visual features of instances of the variable font whichare expected to affect the similarity score to a greater degree thanaxis values of the other additional design axes.

The similarity module 110 determines a value of the additional designaxis which is expected to maximize the similarity score and uses thisdetermined value to generate an instance of the variable font. Forexample, the similarity module 110 generates the instance of thevariable font from the instance of the variable font with glyphs havingthe weights, widths, and slants of the input font 116. In one example,the similarity module 110 generates the instance of the variable font asa similar font 118.

Glyphs rendered using the similar font 118 are displayed in a userinterface 120 of the display device 106 along with glyphs rendered usingthe input font 116. The input font 116 is a non-variable font in thisexample (e.g., Nobel Regular) and the similar font 118 is an instance ofa variable font (e.g., Dunbar Series AP). As shown, the glyphs of thesimilar font 118 are visually similar to the glyphs of the input font116. By determining relationships between values of glyph attributes anddesign axis values in this manner, the similarity module 110 is capableof generating instances of a single variable font which are visuallysimilar to multiple different fonts described by the input data 114.

FIG. 2 depicts a system 200 in an example implementation showingoperation of a similarity module 110. The similarity module 110 isillustrated to include an attribute module 202, an axis module 204, anda modification module 206. As shown, the attribute module 202 receivesthe input data 114 and processes the input data 114 to generateattribute data 206. For example, the input data 114 describes glyphs ofan input font and the attribute module 202 generates that attribute data208 as describing values of attributes of the glyphs of the input font.In this manner, the attribute data 208 describes a weight value, a widthvalue, and/or a slant value of the glyphs of the input font.

FIGS. 3A, 3B, and 3C illustrate an example of generating an instance ofa variable font that is visually similar to an input font. FIG. 3Aillustrates a representation 300 of determining glyph attributes of aninput font. FIG. 3B illustrates a representation 302 of relationshipsbetween design axis values and glyph attribute values. FIG. 3Cillustrates a representation 304 of a generating an instance of avariable font that is visually similar to the input font.

As shown in FIG. 3A, the representation 300 includes glyphs renderedusing an example input font 306. The attribute module 202 processes theinput data 114 to determine attribute values of the glyphs of theexample input font 306. For example, the attribute module 202 determinesa weight value 308 based on a thickness of a vertical stem of a glyph ofthe example input font 306. The attribute module 202 determines a slantvalue 310 based on an angle between a vertical stem and a y-axis of abounding box of a glyph of the example input font 306. As illustrated,the attribute module 202 determines a width value 312 as a distancebetween origins of consecutive glyphs of the example input font 306. Inthis example, the attribute module 202 generates that attribute data 208as describing the weight value 308, the slant value 310, and/or thewidth value 312 of the glyphs of the example input font 306.

The axis module 204 is illustrated as receiving the attribute data 208,the variable font data 112, and/or the input data 114. The axis module204 processes the attribute data 208, the variable font data 112, and/orthe input data 114 to generate custom instance data 210. In one example,the axis module 204 processes the variable font data 112 to deriverelationships between values of attributes of glyphs of a variable fontand registered design axis values of the variable font. For example, theaxis module 204 determines relationships between values of theattributes of glyphs of the variable font and values of an Italic axis,an Optical Size axis, a Slant axis, a Width axis, and a Weight axis.

The representation 302 depicted in FIG. 3B illustrates examples ofrelationships between attribute values of glyphs and design axis valuesof variable fonts. In one example, these relationships may be expressedas:AxisValue=k*GlyphAttribute+Cwhere: AxisValue is a value of a design axis; GlyphAttribute is a glyphattribute value; and k and C are constants.

It is to be appreciated that for a single glyph attribute (e.g.,weight), the relationship between values of the single glyph attributeand values of the design axis of a variable font can include multiplelinear equations with varying k and C constants based on a number ofmasters included in the variable font. This is illustrated by a firstexample 314 and a second example 316 of determined relationships betweendesign axis values of the variable font and weight values of glyphs ofinstances of the variable font. The first example 314 illustrates asingle linear relationship between the design axis values and the weightvalues for a variable font which is interpolated between first andsecond masters of the variable font (e.g., Thin and Bold). The secondexample 316 illustrates a relationship between the design axis valuesand the weight values for a variable font which includes multiple linearrelationships. As shown, the second example 316 includes a first linearrelationship interpolated between first and second masters (e.g., Thinand Regular) and a second linear relationship interpolated betweensecond and third masters (e.g., Regular and Bold) of the variable font.

As illustrated in FIG. 2, the axis module 204 generates a first instanceof the variable font by leveraging the Weight axis such that glyphsrendered using the first instance of the variable font have the weightvalue 308 determined from the glyphs of the example input font 306. Theaxis module 204 generates a second instance of the variable font byleveraging the first instance of the variable font and the Width axissuch that glyphs rendered using the second instance of the variable fonthave the weight value 308 and the width value 312 determined from theglyphs of the example input font 306. The axis module 204 generates athird instance of the variable font using the second instance of thevariable font and the Slant axis such that glyphs rendered using thethird instance of the variable font have the weight value 308, the widthvalue 312, and the slant value 310 determined from the glyphs of theexample input font 306. In this example, the axis module generates thecustom instance data 210 as describing the third instance of thevariable font.

FIG. 3C illustrates the representation 304 which includes glyphsrendered using an input font 318. The attribute module 202 processes theinput data 114 and determines attribute values of the glyphs renderedusing the input font 318. The attribute module 202 generates theattribute data 208 as describing the attribute values of the glyphs ofthe input font 318. The axis module 204 receives the attribute data 208,the variable font data 112, and/or the input data 114 and processes theattribute data 208, the variable font data 112, and/or the input data114 to generate an instance of the variable font 320.

As shown, the axis module 204 generates the instance of the variablefont 320 as having a same weight value, a same width value, and a sameslant value as the glyphs of the input font 318. In this example, thecustom instance data 210 describes the instance of the variable font320. As shown in FIG. 2, the modification module 206 receives the custominstance data 210, the variable font data 112, and/or the input data 114as inputs. The modification module 206 processes the custom instancedata 210, the variable font data 112, and/or the input data 114 andgenerates an instance of the variable font as a visually similar font322.

To do so, the modification module 206 determines a similarity scorebetween the input font 318 and the instance of the variable font 320.The modification module 206 uses this similarity score to identifyadditional design axes of the variable font which are be usable tomaximize the similarity score. The modification module 206 identifies anadditional design axis from the additional design axes as having ahighest absolute value of correlation with the similarity score. Forexample, the modification module 206 uses correlation coefficients suchas Pearson product-moment correlation coefficients to identify theadditional design axis of the variable font having a highest absolutevalue of linear correlation with the similarity score. In an example,the modification module 206 leverages cross-correlation calculations toidentify the additional design axis of the variable font having thehighest absolute value of correlation with the similarity score.

In this manner, modification module 206 selects the additional designaxis from the additional design axes as having axis values correspondingto visual features of instances of the variable font which are expectedto affect the similarity score to a greater degree than axis values ofthe other additional design axes. The modification module 206 determinesa value of the additional design axis which is expected to maximize thesimilarity score and uses this determined value to generate the visuallysimilar font 322. For example, the modification module 206 generatesvisually similar font 322 from the instance of the variable font 320.

In order to determine the value of the additional design axis which isexpected to maximize the similarity score, the modification module 206generates an instance of the variable font using a median design axisvalue of the additional design axis. The modification module 206computes a similarity score between this generated instance of thevariable font and the input font 318. The modification module 206 thengenerates an additional instance of the variable font using a designaxis value to a right of the median design axis value. For example, themodification module 206 increases the median value of the additionaldesign axis and generates the additional instance of the variable fontusing the increased value of the additional design axis.

An additional similarity score is computed between the additionalinstance of the variable font and the input font 318. The modificationmodule 206 compares additional similarity score to the previoussimilarity score. If the additional similarity score is greater than theprevious similarity score, then the modification module 206 continues togenerate additional instances of the variable font using design axisvalues further to the right of the median design axis value until adesign axis value corresponding to a maximum similarity score isidentified. For example, the modification module 206 continues toincrease the value of the additional design axis until the design axisvalue corresponding to the maximum similarity score is identified.

If the additional similarity score is less than the previous similarityscore, then the modification module 206 generates a second additionalinstance of the variable font using a design axis value to a left of themedian design axis value. For example, the modification module 206decreases the median value of the additional design axis and generatesthe second additional instance of the variable font using the decreasedvalue of the additional design axis. The modification module 206 thencomputes a second additional similarity score between the secondadditional instance of the variable font and the input font 318. If thesecond additional similarity score is greater than the previoussimilarity score, then the modification module 206 continues to generateadditional instances of the variable font using design axis valuesfurther to the left of the median design axis value until the designaxis value corresponding to the maximum similarity score is identified.For example, the modification module 206 continues to decrease the valueof the additional design axis until the design axis value correspondingto the maximum similarity score is identified.

By identifying the design axis value corresponding to the maximumsimilarity score in this “greedy” approach, the modification module 206reduces a computational cost to identify the design axis value relativeto a “brute force” approach. In one example, this may be represented as:Cost_(BF) =O(n ^(m))where: Cost_(BF) is a computational cost of a “brute force” approach inwhich a feature vector is generated for each possible unique instance ofa variable font to identify a design axis value corresponding to amaximum similarity score that describes a visual similarity between aninstance of the variable font and an input font; n is a number of designaxes of the variable font; and m is a number of available values of eachaxis of the design axes of the variable font (e.g., on an averagebasis).Cost_(G) =O(n*m)where: Cost_(G) is a computational cost of a “greedy” approach in whichfeature vector similarity is used to identify the design axis valuecorresponding to the maximum similarity score; n is the number of designaxes of the variable font; and m is the number of available values ofeach axis of the design axes of the variable font.

Continuing the previous example, the modification module 206 identifiesmultiple additional design axes having high absolute values ofcorrelation with the similarity score. For example, the modificationmodule 206 uses correlation coefficients such as Pearson product-momentcorrelation coefficients to identify a second additional design axis ofthe variable font having a next highest absolute value of linearcorrelation with the similarity score. In order to determine the valueof the additional design axis which is expected to maximize thesimilarity score, the modification module 206 generates an instance ofthe variable font using a median design axis value of the secondadditional design axis. The modification module 206 computes asimilarity score between the generated instance of the variable font andthe input font 318. As in the previous example, the modification module206 generates instances of the variable font using design values to aright and/or a left of the median design axis value until the designaxis value corresponding to the maximum similarity score is identified.

The modification module 206 continues to identify additional design axesand determines values of the identified additional design axes whichcorrespond to a maximum similarity score. In an example in which thevariable font has many additional design axes, the modification module206 identifies a subset of the additional design axes for determiningvalues that maximize the similarity score such as subset of design axesused by named or default instances of the variable font. For example,the modification module 206 identifies the subset of the design axes asincluding design axes determined to have high absolute values ofcorrelation with the similarity score.

The modification module 206 generates a refined instance of the variablefont by determining additional design axes of the variable font ashaving high absolute values of correlation with a similarity score, andthen determining axis values of these design axes which maximize thesimilarity score. The refined instance of the variable font is generatedusing these determined axis values. For example, the modification module206 determines a similarity score between the refined instance of thevariable font and the input font 318. In one example, the modificationmodule 206 generates the refined instance of the variable font as thevisually similar font 322. In another example, the modification module206 modifies values of the registered design axes of the variable fontto improve a visual similarity between the refined instance of thevariable font and the input font 318. In this example, the modificationmodule 206 modifies values of the registered design axes of the variablefont to further refine the refined instance of the variable font such asto compensate for added noise. In this manner, the modification module206 generates the further refined instance of the variable font bymodifying a value of the Weight axis, the Width axis, the Slant axis,and so forth. The modification module 206 generates the further refinedinstance of the variable font as the visually similar font 322 in thisexample. In one example, the modification module 206 includes an outputmodule to output the visually similar font 322 the user interface 120such as by rendering the visually similar font 322 in the user interface120.

As illustrated above, the described systems reduce the computationalcost to identify the design axis value corresponding to the maximumsimilarity score from a cost that increases exponentially to a cost thatincreases multiplicatively. Additionally, the described systems arecapable of generating instances of a single variable font which arevisually similar to multiple different input fonts. In this manner, thedescribed systems can reduce computing resource consumption byrepresenting multiple different input fonts using instances of a singlevariable font. For example, a single variable font file is usable toreplace font files of multiple input fonts. Thus, a font file repositoryhaving many font files of different fonts is replaceable with arepository having a few variable font files and/or a single variablefont file.

In general, functionality, features, and concepts described in relationto the examples above and below may be employed in the context of theexample procedures described in this section. Further, functionality,features, and concepts described in relation to different figures andexamples in this document may be interchanged among one another and arenot limited to implementation in the context of a particular figure orprocedure. Moreover, blocks associated with different representativeprocedures and corresponding figures herein may be applied togetherand/or combined in different ways. Thus, individual functionality,features, and concepts described in relation to different exampleenvironments, devices, components, figures, and procedures herein may beused in any suitable combinations and are not limited to the particularcombinations represented by the enumerated examples in this description.

Example Procedures

The following discussion describes techniques that may be implementedutilizing the previously described systems and devices. Aspects of eachof the procedures may be implemented in hardware, firmware, software, ora combination thereof. The procedures are shown as a set of blocks thatspecify operations performed by one or more devices and are notnecessarily limited to the orders shown for performing the operations bythe respective blocks. In portions of the following discussion,reference may be made to FIGS. 1-3. FIG. 4 is a flow diagram depicting aprocedure 400 in an example implementation in which input datadescribing attribute values of glyphs of an input font is received andan instance of a variable font is generated that is visually similar tothe input font.

Input data describing attribute values of glyphs of an input font isreceived (block 402). In one example, the computing device 102implements the similarity module 110 to receive the input datadescribing the attribute values of the glyphs of the input font. Acustom instance of a variable font is generated by modifying a value ofa design axis of the variable font based on the attribute values (block404). The similarity module 110 generates the custom instance of thevariable font in one example.

A similarity score describing a visual similarity between the custominstance of the variable font and the input font is determined (block406). The computing device 102 implements the similarity module 110 todetermine the similarity score. An additional design axis of thevariable font is identified based on the similarity score (block 408).The similarity module 110 identifies the additional design axis ashaving values which correspond to a high absolute value of correlationwith the similarity score one example. An instance of the variable fontthat is visually similar to the input font is generated by modifying avalue of the additional design axis (block 410). For example, thesimilarity module 110 generates the instance of the variable font thatis visually similar to the input font.

FIG. 5 illustrates an example 500 of generated instances of a variablefont that are visually similar to example input fonts. As shown, theexample 500 includes glyphs rendered using a first input font 502 and agenerated instance of a variable font 504 that is visually similar tothe first input font 502. In this example, the first input font 502 isGill Sans Light and the generated instance of the variable font 504 isDunbar Series AP having a weight value of 64 and an xheight value of454. For example, the similarity module 110 modifies a value of a Weightaxis of the variable font based on attributes of glyphs of the inputfont 502. The similarity module 110 generates a similarity score betweenthe input font 502 and an instance of the variable font having themodified value of the Weight axis. The similarity module 110 identifiesan xHeight axis as having a high absolute correlation with thissimilarity score and determines the xHeight axis value as maximizing thesimilarity score. The similarity module 110 generates the instance ofthe variable font 504 as having the weight value of 64 and the xheightvalue of 454.

The example 500 also includes glyphs rendered using a second input font506 and a generated instance of a variable font 508 that is visuallysimilar to the second input font 506. For example, the similarity module110 generates the instance of the variable font 508 based on values ofglyph attributes of the second input font 506. As illustrated, thesecond input font 506 is Le Havre Regular and the generated instance ofthe variable font 508 is Dunbar Series AP having a weight value of 98and an xheight value of 353. Although the first input font 502 and thesecond input font 506 are not visually similar, the similarity module110 generates instances of a single variable font (e.g., Dunbar SeriesAP) that are visually similar to the first input font 502 and the secondinput font 506.

As shown, the example 500 includes glyphs rendered using a third inputfont 510, a generated instance of a variable font 512 that is visuallysimilar to the third input font 510, glyphs rendered using a fourthinput font 514, a generated instance of a variable font 516 that isvisually similar to the fourth input font 514, glyphs rendered using afifth input font 518, and a generated instance of a variable font 520that is visually similar to the fifth input font 518. For example, thethird input font 510 is Nobel Regular and the generated instance of thevariable font 512 is Dunbar Series AP having a weight value of 109 andan xheight value of 417. The fourth input font 514 is Alwyn Thin and thegenerated instance of the variable font 516 that is visually similar tothe forth input font 514 is Dunbar Series AP having a weight value of 51and an xheight value of 483. As illustrated, the fifth input font 518 isTrebuchet MS Regular and the generated instance of the variable font isDunbar Series AP having a weight value of 91 and an xheight value of516.

Accordingly, the similarity module 110 is capable of generatinginstances of a single variable font (e.g., Dunbar Series AP) which arevisually similar to a variety of other fonts (e.g., Gill Sans Light, LeHavre Regular, Nobel Regular, Alwyn Thin, and Trebuchet MS Regular). Inthe illustrated example, the similarity module 110 generates instancesof the single variable font by modifying values of two design axes(e.g., weight and xheight). The similarity module 110 can also generateinstances of a variable font by modifying values of a single design axisor a plurality of additional design axes. For example, the similaritymodule 110 generates instances of a variable font by modifying values ofregistered design axes (e.g., Italic, Optical Size, Slant, Width, and/orWeight) and/or unregistered design axes (e.g., non-standard,unregistered, and/or custom).

In another example, the similarity module 110 prioritizes an order ofdesign axes for modification such that a value of a first design axis ismodified before a value of a second design axis is modified. In thisexample, the similarity module 110 prioritizes the order of design axesfor modification such that the values of the first and second designaxes are modified before a value of a third design axis is modified. Forexample, the similarity module 110 prioritizes an order of registereddesign axes such that a value of a Weight axis is determined, then avalue of a Width axis is determined second, and then a value of a Slantaxis is determined. Accordingly, the similarity module 110 is capable ofgenerating instances of variable fonts which are visually similar tomany other fonts having a variety of visual features.

FIG. 6 is a flow diagram depicting a procedure 600 in an exampleimplementation in which a digital image depicting glyphs rendered usingan input font is received and an instance of a variable font isgenerated that is visually similar to the input font. A digital imagedepicting glyphs rendered using an input font is received (block 602).The computing device 102 implements the similarity module 110 to receivethe digital image in one example. Attribute values of the glyphsdepicted in the digital image are determined (block 604). The similaritymodule 110 determines the attribute values of the glyphs depicted in thedigital image.

A custom instance of a variable font is generated by modifying a valueof a design axis of the variable font based on the attribute values(block 606). For example, the design axis is a registered design axis ofthe variable font. In one example, the computing device 102 implementsthe similarity module 110 to generate the custom instance of thevariable font. A similarity score indicating a visual similarity betweenthe custom instance of the variable font and the input font isdetermined (block 608). For example, the similarity module 110determines the similarity score.

An additional design axis of the variable font is identified based onthe similarity score (block 610). The computing device 102 implementsthe similarity module 110 to identify the additional design axis in anexample. An instance of the variable font is generated that is visuallysimilar to the input font by modifying a value of the additional designaxis (block 612). For example, the similarity module 110 generates theinstance of the variable font that is visually similar to the inputfont.

FIG. 7 illustrates an example 700 of a user interface 702 in whichinstances of variable fonts are identified as being visually similar toan input font 704. As shown in the example 700, glyphs of the input font704 are rendered in the user interface 702. An indication of a similarfont 706 is displayed in a menu of the user interface 702 whichidentifies the similar font as being visually similar to the input font704. An indication of an instance of a variable font 708 is alsodisplayed in the menu of the user interface 702 which identifies theinstance of the variable font as being visually similar to the inputfont 704. In this example, the instance of the variable font is usablein place of the similar font or in addition to the similar font.

As illustrated in the example 700, instances of variable fonts aredisplayed as visually similar fonts to a particular font. The particularfont can be a variable font or a non-variable font. As shown, aninstance of a locally available variable font is used render glyphs thatare visually similar to glyphs rendered using the particular font, forexample, if another font that is visually similar to the particular fontis not available locally to the computing device 102. For example,instances of variable fonts are associated with other fonts as beingvisually similar to the other fonts. These instances of variable fontsare usable in addition to the other fonts, in place of the other fonts,and so forth.

Example System and Device

FIG. 8 illustrates an example system 800 that includes an examplecomputing device that is representative of one or more computing systemsand/or devices that may implement the various techniques describedherein. This is illustrated through inclusion of the similarity module110. The computing device 802 may be, for example, a server of a serviceprovider, a device associated with a client (e.g., a client device), anon-chip system, and/or any other suitable computing device or computingsystem.

The example computing device 802 as illustrated includes a processingsystem 804, one or more computer-readable media 806, and one or more I/Ointerfaces 808 that are communicatively coupled, one to another.Although not shown, the computing device 802 may further include asystem bus or other data and command transfer system that couples thevarious components, one to another. A system bus can include any one orcombination of different bus structures, such as a memory bus or memorycontroller, a peripheral bus, a universal serial bus, and/or a processoror local bus that utilizes any of a variety of bus architectures. Avariety of other examples are also contemplated, such as control anddata lines.

The processing system 804 is representative of functionality to performone or more operations using hardware. Accordingly, the processingsystem 804 is illustrated as including hardware elements 810 that may beconfigured as processors, functional blocks, and so forth. This mayinclude implementation in hardware as an application specific integratedcircuit or other logic device formed using one or more semiconductors.The hardware elements 810 are not limited by the materials from whichthey are formed or the processing mechanisms employed therein. Forexample, processors may be comprised of semiconductor(s) and/ortransistors (e.g., electronic integrated circuits (ICs)). In such acontext, processor-executable instructions may beelectronically-executable instructions.

The computer-readable media 806 is illustrated as includingmemory/storage 812. The memory/storage 812 represents memory/storagecapacity associated with one or more computer-readable media. Thememory/storage component 812 may include volatile media (such as randomaccess memory (RAM)) and/or nonvolatile media (such as read only memory(ROM), Flash memory, optical disks, magnetic disks, and so forth). Thememory/storage component 812 may include fixed media (e.g., RAM, ROM, afixed hard drive, and so on) as well as removable media (e.g., Flashmemory, a removable hard drive, an optical disc, and so forth). Thecomputer-readable media 806 may be configured in a variety of other waysas further described below.

Input/output interface(s) 808 are representative of functionality toallow a user to enter commands and information to computing device 802,and also allow information to be presented to the user and/or othercomponents or devices using various input/output devices. Examples ofinput devices include a keyboard, a cursor control device (e.g., amouse), a microphone, a scanner, touch functionality (e.g., capacitiveor other sensors that are configured to detect physical touch), a camera(e.g., which may employ visible or non-visible wavelengths such asinfrared frequencies to recognize movement as gestures that do notinvolve touch), and so forth. Examples of output devices include adisplay device (e.g., a monitor or projector), speakers, a printer, anetwork card, tactile-response device, and so forth. Thus, the computingdevice 802 may be configured in a variety of ways as further describedbelow to support user interaction.

Various techniques may be described herein in the general context ofsoftware, hardware elements, or program modules. Generally, such modulesinclude routines, programs, objects, elements, components, datastructures, and so forth that perform particular tasks or implementparticular abstract data types. The terms “module,” “functionality,” and“component” as used herein generally represent software, firmware,hardware, or a combination thereof. The features of the techniquesdescribed herein are platform-independent, meaning that the techniquesmay be implemented on a variety of commercial computing platforms havinga variety of processors.

An implementation of the described modules and techniques may be storedon or transmitted across some form of computer-readable media. Thecomputer-readable media may include a variety of media that may beaccessed by the computing device 802. By way of example, and notlimitation, computer-readable media may include “computer-readablestorage media” and “computer-readable signal media.”

“Computer-readable storage media” may refer to media and/or devices thatenable persistent and/or non-transitory storage of information incontrast to mere signal transmission, carrier waves, or signals per se.Thus, computer-readable storage media refers to non-signal bearingmedia. The computer-readable storage media includes hardware such asvolatile and non-volatile, removable and non-removable media and/orstorage devices implemented in a method or technology suitable forstorage of information such as computer readable instructions, datastructures, program modules, logic elements/circuits, or other data.Examples of computer-readable storage media may include, but are notlimited to, RAM, ROM, EEPROM, flash memory or other memory technology,CD-ROM, digital versatile disks (DVD) or other optical storage, harddisks, magnetic cassettes, magnetic tape, magnetic disk storage or othermagnetic storage devices, or other storage device, tangible media, orarticle of manufacture suitable to store the desired information andwhich may be accessed by a computer.

“Computer-readable signal media” may refer to a signal-bearing mediumthat is configured to transmit instructions to the hardware of thecomputing device 802, such as via a network. Signal media typically mayembody computer readable instructions, data structures, program modules,or other data in a modulated data signal, such as carrier waves, datasignals, or other transport mechanism. Signal media also include anyinformation delivery media. The term “modulated data signal” means asignal that has one or more of its characteristics set or changed insuch a manner as to encode information in the signal. By way of example,and not limitation, communication media include wired media such as awired network or direct-wired connection, and wireless media such asacoustic, RF, infrared, and other wireless media.

As previously described, hardware elements 810 and computer-readablemedia 806 are representative of modules, programmable device logicand/or fixed device logic implemented in a hardware form that may beemployed in some embodiments to implement at least some aspects of thetechniques described herein, such as to perform one or moreinstructions. Hardware may include components of an integrated circuitor on-chip system, an application-specific integrated circuit (ASIC), afield-programmable gate array (FPGA), a complex programmable logicdevice (CPLD), and other implementations in silicon or other hardware.In this context, hardware may operate as a processing device thatperforms program tasks defined by instructions and/or logic embodied bythe hardware as well as a hardware utilized to store instructions forexecution, e.g., the computer-readable storage media describedpreviously.

Combinations of the foregoing may also be employed to implement varioustechniques described herein. Accordingly, software, hardware, orexecutable modules may be implemented as one or more instructions and/orlogic embodied on some form of computer-readable storage media and/or byone or more hardware elements 810. The computing device 802 may beconfigured to implement particular instructions and/or functionscorresponding to the software and/or hardware modules. Accordingly,implementation of a module that is executable by the computing device802 as software may be achieved at least partially in hardware, e.g.,through use of computer-readable storage media and/or hardware elements810 of the processing system 804. The instructions and/or functions maybe executable/operable by one or more articles of manufacture (forexample, one or more computing devices 802 and/or processing systems804) to implement techniques, modules, and examples described herein.

The techniques described herein may be supported by variousconfigurations of the computing device 802 and are not limited to thespecific examples of the techniques described herein. This functionalitymay also be implemented all or in part through use of a distributedsystem, such as over a “cloud” 814 as described below.

The cloud 814 includes and/or is representative of a platform 816 forresources 818. The platform 816 abstracts underlying functionality ofhardware (e.g., servers) and software resources of the cloud 814. Theresources 818 may include applications and/or data that can be utilizedwhile computer processing is executed on servers that are remote fromthe computing device 802. Resources 818 can also include servicesprovided over the Internet and/or through a subscriber network, such asa cellular or Wi-Fi network.

The platform 816 may abstract resources 818 and functions to connect thecomputing device 802 with other computing devices. The platform may alsoserve to abstract scaling of resources to provide a corresponding levelof scale to encountered demand for the resources that are implementedvia the platform. Accordingly, in an interconnected device embodiment,implementation of functionality described herein may be distributedthroughout the system 800. For example, the functionality may beimplemented in part on the computing device 802 as well as via theplatform 816 that abstracts the functionality of the cloud 814.

CONCLUSION

Although implementations of systems for generating instances of variablefonts have been described in language specific to structural featuresand/or methods, it is to be understood that the appended claims are notnecessarily limited to the specific features or methods described.Rather, the specific features and methods are disclosed as exampleimplementations of systems for generating instances of variable fonts,and other equivalent features and methods are intended to be within thescope of the appended claims. Further, various different examples aredescribed and it is to be appreciated that each described example can beimplemented independently or in connection with one or more otherdescribed examples.

What is claimed is:
 1. In a digital medium environment to automaticallygenerate an instance of a variable font that is visually similar to aninput font, a method implemented by a computing device, the methodcomprising: receiving, by an attribute module, input data describingattribute values of glyphs of the input font; generating, by an axismodule, a custom instance of the variable font by modifying a value of adesign axis of the variable font based on the attribute values;determining, by a similarity module, a similarity score describing avisual similarity between the custom instance of the variable font andthe input font based on a Euclidean distance between a feature vectordescribing a visual appearance of the input font and a feature vectordescribing a visual appearance of the custom instance of the variablefont; identifying, by the similarity module, an additional design axisof the variable font as having a higher absolute value of correlationwith the similarity score than the design axis; generating, by amodification module, the instance of the variable font by modifying avalue of the additional design axis; and outputting, by an outputmodule, the instance of the variable font for display in a userinterface.
 2. The method as described in claim 1, wherein the designaxis is a registered design axis of the variable font.
 3. The method asdescribed in claim 2, wherein the additional design axis is not aregistered design axis of the variable font.
 4. The method as describedin claim 2, further comprising determining linear relationships betweenthe attribute values of the glyphs of the input font and values of theregistered design axis.
 5. The method as described in claim 4, whereinthe linear relationships are dependent on a number of masters includedin the variable font.
 6. The method as described in claim 1, wherein theattribute values of the glyphs of the input font include at least one ofa weight, a width, or a slant.
 7. The method as described in claim 1,wherein the input font is a non-variable font.
 8. The method asdescribed in claim 1, wherein the input font is an additional variablefont.
 9. One or more computer-readable storage media comprisinginstructions stored thereon that, responsive to execution by a computingdevice, causes the computing device to perform operations including:receiving a digital image depicting glyphs rendered using an input font;determining attribute values of the glyphs depicted in the digitalimage; generating a custom instance of a variable font by modifying avalue of a design axis of the variable font based on the attributevalues; determining a similarity score indicating a visual similaritybetween the custom instance of the variable font and the input fontbased on a Euclidean distance between a feature vector describing avisual appearance of the input font and a feature vector describing avisual appearance of the custom instance of the variable font;identifying an additional design axis of the variable font as having ahigher absolute value of correlation with the similarity score than thedesign axis; and generating an instance of the variable font that isvisually similar to the input font by modifying a value of theadditional design axis.
 10. The one or more computer-readable storagemedia as described in claim 9, wherein the operations further includedetermining linear relationships between the attribute values of theglyphs rendered using the input font and values of the design axis. 11.The one or more computer-readable storage media as described in claim 9,wherein the input font is a non-variable font.
 12. The one or morecomputer-readable storage media as described in claim 9, wherein theinput font is an additional variable font.
 13. The one or morecomputer-readable storage media as described in claim 9, wherein thedesign axis is a registered design axis of the variable font.
 14. Theone or more computer-readable storage media as described in claim 9,wherein the design axis is not a registered design axis of the variablefont.
 15. A system comprising: a processing system; and acomputer-readable storage medium having instructions stored thereonthat, responsive to execution by the processing system, causes theprocessing system to perform operations including: receiving input datadescribing an input font; determining attribute values of glyphs of theinput font; generating a custom instance of a variable font by modifyinga value of a registered design axis of the variable font based on theattribute values; determining a similarity score describing a visualsimilarity between the custom instance of the variable font and theinput font based on a Euclidean distance between a feature vectordescribing a visual appearance of the input font and a feature vectordescribing a visual appearance of the custom instance of the variablefont; identifying an additional design axis of the variable font ashaving a higher absolute value of correlation with the similarity scorethan the registered design axis; and generating an instance of thevariable font that is visually similar to the input font by modifying avalue of the additional design axis.
 16. The system as described inclaim 15, wherein the additional design axis is an additional registereddesign axis of the variable font.
 17. The system as described in claim15, wherein the additional design axis is not a registered design axisof the variable font.
 18. The system as described in claim 15, whereinthe input font is a non-variable font.
 19. The system as described inclaim 15, wherein the input font is an additional variable font.
 20. Thesystem as described in claim 15, wherein the operations further includedetermining linear relationships between the attribute values of theglyphs rendered using the input font and values of the registered designaxis.